package org.cuadroanotacionapi.controller;

import org.cuadroanotacionapi.beans.Usuarios;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
import org.cuadroanotacionapi.persistencia.UsuariosPersistencia;
import org.cuadroanotacionapi.generales.Mensajeria;


/**
*
*  @author
*/

public class UsuariosController implements Serializable {
private static final long serialVersionUID = 1L;
public static Exception excepcion;



private List<Usuarios> usuarioslist;

private Usuarios selectedusuarios;



public UsuariosController(){
}

public Usuarios getSelectedUsuarios() {
 return selectedusuarios;
}

 public void setSelectedUsuarios(Usuarios selectedusuarios) {
 this.selectedusuarios = selectedusuarios;
}


public List<Usuarios> getUsuarioslist() {
return usuarioslist;
}

 public void setUsuarioslist(List<Usuarios> usuarioslist) {
this.usuarioslist = usuarioslist;
}
/*
*  getMensaje()
*   devuelve el mensaje encontrado...
*/
public String getMensaje() {
   String lexcepcion = excepcion.toString();
   if (lexcepcion.indexOf(":") != -1) {
       lexcepcion = lexcepcion.substring(lexcepcion.indexOf(":") + 1);
   }
  return lexcepcion;
}


/**
*
* Crear()
*/

public boolean Crear (Usuarios usuarios) {
try{
   if (Validar(usuarios)) {
     if (findByPrimaryKey(usuarios)==null) {
         if (!UsuariosPersistencia.Insertar(usuarios)) {
                 excepcion = UsuariosPersistencia.excepcion;
          }
          else{
             return true;
           }
       }else{
             excepcion =new Exception("Ya existe un registro con esos datos");
            return false;
       }
    }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Crear()");
  }
  return false;
}


/**
*
* Editar()
*/

public boolean Editar (Usuarios usuarios) {
try{
   if (Validar(usuarios)) {
 if (UsuariosPersistencia.ExisteRegistro(usuarios)) {
     if (!UsuariosPersistencia.Editar(usuarios)) {
                excepcion = UsuariosPersistencia.excepcion;
     }
     else{
            return true;
     }
   }else{
             excepcion =new Exception("No existe un registro con esa clave primaria");
            return false;
     }
  }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Editar()");
  }
  return false;
}


/**
*
* Editar(String sqlupdate)
*/

public boolean Editar(String sqlupdate) {
try{
     if (!UsuariosPersistencia.Editar(sqlupdate)) {
                excepcion = UsuariosPersistencia.excepcion;
     }
     else{
            return true;
     }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Editar()");
  }
  return false;
}


/**
*
* EditarClavePrimaria()
*/

public boolean EditarClavePrimaria (Usuarios usuarios_old , Usuarios usuarios) {
try{
   if (Validar(usuarios_old)) {
 if (UsuariosPersistencia.ExisteRegistro(usuarios_old)) {
     if (!UsuariosPersistencia.EditarClavePrimaria(usuarios_old,usuarios)) {
                excepcion = UsuariosPersistencia.excepcion;
     }
     else{
            return true;
     }
   }else{
             excepcion =new Exception("No existe un registro con esa clave primaria");
            return false;
     }
  }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Editar()");
  }
  return false;
}


/**
*
* Eliminar()
*/

public boolean Eliminar (Usuarios usuarios) {
try{
 if (findByPrimaryKey(usuarios)!=null) {
     if (!UsuariosPersistencia.Eliminar(usuarios)) {
                excepcion = UsuariosPersistencia.excepcion;
     }else{
            return true;
           }
   }else{
             excepcion =new Exception("No existe un registro con esa clave primaria");
            return false;
     }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Eliminar()");
  }
  return false;
}


/**
*
* Eliminar(String sqldelete)
*/

public boolean Eliminar(String sqldelete) {
try{
     if (!UsuariosPersistencia.Eliminar(sqldelete)) {
                excepcion = UsuariosPersistencia.excepcion;
     }else{
            return true;
           }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Eliminar()");
  }
  return false;
}


/**
*
* EliminarTodos()
*/

public boolean EliminarTodos() {
try{
     if (!UsuariosPersistencia.EliminarTodos()) {
                excepcion = UsuariosPersistencia.excepcion;
     }
     else{
            return true;
     }
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"EliminarTodos()");
  }
  return false;
}


/**
*
* ExisteRegistro()
*/



public boolean ExisteRegistro(Usuarios usuarios) {
try{
  return UsuariosPersistencia.ExisteRegistro(usuarios);
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"ExisteRegistro()");
  }
 return false;
}


/**
*
* findPrimaryKey()
*/



public Usuarios findByPrimaryKey(Usuarios usuarios) {
try{
    this.selectedusuarios = UsuariosPersistencia.findByPrimaryKey(usuarios);
    return selectedusuarios;
  }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByPrimaryKey()");
  }
 return null;
}


/**
*
* findByUsername()
*/

public boolean findByUsername(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByUsername(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByUsername()");
  }
  return false;
  }


/**
*
* findByPassword()
*/

public boolean findByPassword(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByPassword(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByPassword()");
  }
  return false;
  }


/**
*
* findByUsuario()
*/

public boolean findByUsuario(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByUsuario(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByUsuario()");
  }
  return false;
  }


/**
*
* findByEmail()
*/

public boolean findByEmail(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByEmail(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByEmail()");
  }
  return false;
  }


/**
*
* findByTelefono()
*/

public boolean findByTelefono(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByTelefono(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByTelefono()");
  }
  return false;
  }


/**
*
* findByCelular()
*/

public boolean findByCelular(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByCelular(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByCelular()");
  }
  return false;
  }


/**
*
* findByActivo()
*/

public boolean findByActivo(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByActivo(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByActivo()");
  }
  return false;
  }


/**
*
* findByIdgrupousuario()
*/

public boolean findByIdgrupousuario(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByIdgrupousuario(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByIdgrupousuario()");
  }
  return false;
  }


/**
*
* findByCedula()
*/

public boolean findByCedula(Usuarios usuarios) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByCedula(usuarios) ;
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByCedula()");
  }
  return false;
  }


/**
*
* findByMapa()
*/

public boolean findByMapa(Map parametros) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.findByMapa(parametros);
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByMapa()");
  }
  return false;
}


/**
*
* Func(String funcion, String campo)
*/

public Double Func(String funcion, String campo) {
  try{
     return UsuariosPersistencia.Func(funcion,campo);
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Func()");
  }
  return 0.0;
}


/**
*
* Double Func(String funcion, String campo, String where)
*/

public Double Func(String funcion, String campo,String where) {
  try{
     return UsuariosPersistencia.Func(funcion,campo,where);
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Func()");
  }
  return 0.0;
}


/**
*
* Contador()
*/

public Integer Contador() {
  try{
     int x =UsuariosPersistencia.Contador();
    return x;
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Contador()");
  }
 return 0;
}


/**
*
* Contador(String sql)
*/

public Integer Contador(String sqlquery) {
  try{
     int x =UsuariosPersistencia.Contador(sqlquery);
    return x;
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Contador()");
  }
 return 0;
}


/**
*
* Query()
*/

public boolean Query(String query) {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     usuarioslist = UsuariosPersistencia.Query(query);
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"Query()");
  }
  return false;
}


/**
*
* Listar()
*/



public boolean Listar() {
  try{
     if(usuarioslist != null){
        usuarioslist.removeAll(usuarioslist);
     }
     Map<String, String> parametros = new HashMap<String, String>();
     usuarioslist = UsuariosPersistencia.getLista(parametros);
     if (usuarioslist== null) {
                excepcion = UsuariosPersistencia.excepcion;
       }
       else{
            return true;
            }
    }catch(Exception ex){
     Mensajeria.MensajeError( ex ,"findByMapa()");
  }
            return false;
}


public boolean Validar(Usuarios usuarios) {
 try{
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/cuadroanotacionapi/properties/mensajes");

if (usuarios.getUsername() == null || usuarios.getUsername().equals("")){
   excepcion=new Exception(bundle.getString("username")  + "  " + bundle.getString("msg.nonulo"));
  return false;
}
if (usuarios.getPassword() == null || usuarios.getPassword().equals("")){
   excepcion=new Exception(bundle.getString("password")  + "  " + bundle.getString("msg.nonulo"));
  return false;
}
if (usuarios.getUsuario() == null || usuarios.getUsuario().equals("")){
   excepcion=new Exception(bundle.getString("usuario")  + "  " + bundle.getString("msg.nonulo"));
  return false;
}
if (usuarios.getIdgrupousuario() == null || usuarios.getIdgrupousuario().equals("")){
   excepcion=new Exception(bundle.getString("idgrupousuario")  + "  " + bundle.getString("msg.nonulo"));
  return false;
}
if (usuarios.getCedula() == null || usuarios.getCedula().equals("")){
   excepcion=new Exception(bundle.getString("cedula")  + "  " + bundle.getString("msg.nonulo"));
  return false;
}
  return true;
 }catch(Exception ex){
   Mensajeria.MensajeError(ex, "Validar()");
  return false;

  }
}


}
